(70%)NaN – не число
А что, кстати, получится, если не проверить что дискриминант меньше нуля?
Попробуем:
#include <math.h>#include <stdio.h>int main(void){double x =-2, y, z;
y=sqrt(x);
z=2*y+x/2;printf("\n %f %f %f",x,y,z);return0;}
результат
-2.000000 -1.#IND00 -1.#IND00
Мы видим, что никакого сообщения об ошибке не появилось, но в результате вычисления корня возникло "что-то странное" (y), при этом при использовании в выражении оно превращает результат в себя (распространяется по выражению) (z)!
Это "странное" означает неопределенный результат, NaN (расшифровывается как not a number – не число).
"Распространение по выражению" достаточно логично: если у нас по ходу вычисления получилось "не число", результат смысла не имеет.
А что, кстати, получится, если не проверить что дискриминант меньше нуля?
Попробуем:
результат
Мы видим, что никакого сообщения об ошибке не появилось, но в результате вычисления корня возникло "что-то странное" (y), при этом при использовании в выражении оно превращает результат в себя (распространяется по выражению) (z)!
Это "странное" означает неопределенный результат, NaN (расшифровывается как not a number – не число).
"Распространение по выражению" достаточно логично: если у нас по ходу вычисления получилось "не число", результат смысла не имеет.